package it.unipg.bipod.web;

import it.unipg.bipod.ResManager;
import java.util.Properties;
import java.io.IOException;
import javax.faces.FacesException;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

/**
 * DefaultBean e' la classe da cui ereditano tutti i Bean utilizzati nello
 * strato di presentazione di BiPoD.<br>
 * Fornisce alcuni metodi comuni di utilita'.
 * 
 * @author Lorenzo Porzi
 *
 */
public abstract class DefaultBean {
	private Properties settings; // Le impostazioni dello strato di presentazione
	public final int PAGE_SIZE;
	
	/**
	 * Costruttore di default.<br>
	 * Iniziallizza il contesto e i parametri.
	 * 
	 * @throws FacesException nel caso non riesca a recuperare i parametri.
	 */
	public DefaultBean() {		
		try {
			// Carica le impostazioni
			this.settings = ResManager.getInstance().getPresentationSettings();
			PAGE_SIZE = Integer.parseInt(settings.getProperty("pageSize"));
			
		} catch (IOException e) {
			throw new FacesException(e);
		}
	}
	
	/**
	 * Ritorna i parametri di presentazione.
	 * 
	 * @return un {@link java.util.Properties} con i parametri.
	 */
	public Properties getSettings() {
		return settings;
	}
	
	/**
	 * Restituisce il contesto attuale.
	 * 
	 * @return un oggetto {@link javax.faces.context.FacesContext}.
	 */
	public FacesContext getContext() {
		return FacesContext.getCurrentInstance();
	}

	/**
	 * Aggiunge un messaggio informativo ai messaggi globali.
	 * 
	 * @param message Il testo del messaggio da aggiungere.
	 */
	public void addInfoMessage(String message) {
		getContext().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, message, null));
	}
	
	/**
	 * Aggiunge un messaggio di warning ai messaggi globali.
	 * 
	 * @param message Il testo del messaggio da aggiungere.
	 */
	public void addWarnMessage(String message) {
		getContext().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, message, null));
	}
}
